package com.cdu.commons;


import lombok.Data;
import lombok.experimental.Accessors;

import java.util.HashMap;
import java.util.Map;

@Data
@Accessors(chain = true)//支持连缀书写
public class R<T> {

    private Integer code; //编码：1成功，0和其它数字为失败

    private String message; //错误信息

    private T data; //数据

    private Map map = new HashMap(); //动态数据

    /**
     * 操作成功，不携带数据
     */
    public static <Void> R<Void> ok(String message) {
        return new R<Void>()
                .setCode(ServiceCode.OK.getCode())
                .setMessage(message);
    }
    /**
     * 操作成功，携带数据
     */
    public static <T> R<T> ok(String message,T data) {
        return new R<T>().setCode(ServiceCode.OK.getCode())
                .setMessage(message)
                .setData(data);
    }
    /**
     * 操作失败，因为异常
     */
    public static <Void> R<Void> fail(ServiceException e){
        return new R<Void>()
                .setCode(e.getServiceCode().getCode())
                .setMessage(e.getMessage());
    }
    

    //操作成功，不携带数据

//    public static <T> R<T> success(T object) {
//        R<T> r = new R<T>();
//        r.data = object;
//        r.code = 1;
//        return r;
//    }
//    public static <T> R<T> success(T object,int code,String msg) {
//        R<T> r = new R<T>();
//        r.data = object;
//        r.code = 2;
//        r.msg="这是一个特殊请求";
//        return r;
//    }
//
//
//    public static <T> R<T> error(String msg) {
//        R r = new R();
//        r.msg = msg;
//        r.code = 0;
//        return r;
//    }
//
//    public R<T> add(String key, Object value) {
//        this.map.put(key, value);
//        return this;
//    }

}

